/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.comandos;

import br.ufc.quixada.adrs.interfaces.Comando;
import br.ufc.quixada.adrs.model.Usuario;
import br.ufc.quixada.adrs.service.UsuarioService;
import br.ufc.quixada.adrs.util.Msg;
import br.ufc.quixada.adrs.util.SendMail;
import br.ufc.quixada.adrs.util.UtilAdrs;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author ismaily
 */
public class CmdRecuperarSenha implements Comando {

    public String executa(HttpServletRequest request, HttpServletResponse response) {
        HttpSession session = request.getSession(true);
        String email = request.getParameter("email");
        String cpf = request.getParameter("cpf");
        UsuarioService us = new UsuarioService();
        if (cpf == null || email == null || cpf.trim().isEmpty() || email.trim().isEmpty()) {
            session.setAttribute("erro", Msg.REQUIRED_FIELDS);
            return "/recuperar_senha.jsp";
        }
        if (cpf.length() < 14) {
            session.setAttribute("erro", Msg.INPUT_ERROR_INVALID_CPF);
            return "/recuperar_senha.jsp";
        }
        Usuario usuario = us.getUsuarioByEmail(email.trim());
        String mensagem = "";
        if (usuario == null) {
            mensagem = "Caro usuario, o seu email nao está cadastrado em nossa base de dados! Caso deseje acessar nosso sistema, entre em contato e solicite seu cadastro.";
        } else if (usuario != null && !usuario.getCpfFormatado().equals(cpf)) {
            session.setAttribute("erro", Msg.USUARIO_NOT_FOUND);
            return "/recuperar_senha.jsp";
        } else {
            String novaSenha = UtilAdrs.gerarPalavraAleatoriamente();
            mensagem = "Prezado(a) " + usuario.getNome() + ",\n"
                    + "A sua nova senha no sistema ADRS é: " + novaSenha + "\n"
                    + "Pedimos que a altere para o valor desejado o mais rápido possível.\n"
                    + "Atenciosamente,\n"
                    + "A equipe UFC-Quixadá.";
            usuario.setSenha(UtilAdrs.criptografar(novaSenha));
            if (us.updateUsuario(usuario)) {
                try {
                    SendMail.sendMail(email, "SENHA DO SISTEMA ADRS", mensagem);
                    session.setAttribute("sucesso", Msg.RECOVERY_EMAIL_SUCCESSFULLY_SENT);
                } catch (Exception ex) {
                    session.setAttribute("erro", Msg.OPERATIONAL_ERROR_DELIVERING_EMAIL);
                }
            } else {
                session.setAttribute("erro", Msg.OPERATIONAL_ERROR_DELIVERING_EMAIL);
            }
        }

        return "/index.jsp";
    }
}
